Batch Script-এ Nested Loops ব্যবহার করা হয় যখন আপনি একটি লুপের মধ্যে আরেকটি লুপ চালাতে চান। এটি বেশ কার্যকরী হতে পারে যখন আপনি একাধিক স্তরের লুপ তৈরি করতে চান, যেমন একটি লুপের মধ্যে আরও একাধিক লুপ। এই পদ্ধতিতে, আপনি বাইরের লুপে একটি আউটপুট প্রক্রিয়া করতে পারেন এবং ভিতরের লুপের মাধ্যমে প্রতিটি আউটপুটের জন্য আরও বিস্তারিত কাজ করতে পারেন।
Nested Loops কী?
Nested Loops বলতে বুঝানো হয় এমন একটি লুপ যেখানে এক লুপের মধ্যে অন্য লুপ থাকে। Batch Script-এ, আপনি সাধারণত FOR লুপ ব্যবহার করে এটি করতে পারেন। ভিতরের লুপটি বাইরের লুপের প্রতিটি পুনরাবৃত্তির জন্য একবার করে চালানো হয়।
Nested Loops-এর গঠন:
FOR %%i IN (range) DO (
FOR %%j IN (range) DO (
REM your commands here
)
)
এখানে:
- বাইরের FOR লুপটি চলবে %%i (বা অন্য কোনো ভেরিয়েবল) এর মান নিয়ে।
- ভিতরের FOR লুপটি চলবে %%j (বা অন্য কোনো ভেরিয়েবল) এর মান নিয়ে।
- প্রতিটি বাইরের লুপের জন্য, ভিতরের লুপটি সম্পূর্ণভাবে চলবে।
উদাহরণ:
ধরা যাক, আপনি একটি ২-ডাইমেনশনাল গ্রিড তৈরি করতে চান, যেখানে বাইরের লুপটি এক সারির জন্য কাজ করবে এবং ভিতরের লুপটি প্রতি সারিতে কলামগুলোর জন্য কাজ করবে।
@echo off
FOR %%i IN (1 2 3) DO (
FOR %%j IN (A B C) DO (
echo %%i %%j
)
)
pause
এখানে:
- বাইরের FOR %%i লুপটি 1, 2, 3 সংখ্যার জন্য চলে।
- ভিতরের FOR %%j লুপটি A, B, C অক্ষরের জন্য চলে।
- প্রতিটি বাইরের লুপের জন্য, ভিতরের লুপটি পুরোপুরি চলে এবং এই ভাবে একে একে সমস্ত 1 A, 1 B, 1 C, 2 A, 2 B, 2 C, এবং 3 A, 3 B, 3 C প্রদর্শিত হবে।
আউটপুট:
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 C
আরও একটি উদাহরণ:
ধরা যাক, আপনি একটি টেবিলের মতো ১ থেকে ৩ পর্যন্ত সংখ্যার জন্য একটি গ্রিড তৈরি করতে চান, যেখানে বাইরের লুপটি রো এবং ভিতরের লুপটি কলাম তৈরি করবে।
@echo off
FOR %%i IN (1 2 3) DO (
FOR %%j IN (1 2 3) DO (
echo %%i %%j
)
)
pause
এখানে, বাইরের লুপটি প্রথমে 1 নেবে, তারপর 2 এবং শেষে 3 নেবে, এবং প্রতিটি বাইরের লুপের জন্য ভিতরের লুপটি ১, ২, ৩ মান নিয়ে চলবে।
Nested Loops ব্যবহার করে 2D Array Simulation:
Batch Script-এ সঠিক 2D Array নেই, তবে Nested Loops ব্যবহার করে আপনি 2D Array সিমুলেট করতে পারেন। উদাহরণস্বরূপ:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
FOR %%i IN (1 2 3) DO (
FOR %%j IN (1 2 3) DO (
set result[!count!]=Row %%i, Column %%j
set /a count+=1
)
)
:: Displaying the values
FOR /L %%k IN (1,1,9) DO (
echo !result[%%k]!
)
pause
এখানে:
- প্রথমে একটি count ভেরিয়েবল তৈরি করা হয়েছে, যা 2D array-এর জন্য ইনডেক্স হিসাবে কাজ করবে।
- বাইরের এবং ভিতরের FOR লুপের মাধ্যমে গ্রিডের সবগুলো সেল সিমুলেট করা হয়েছে।
- শেষে, এক এক করে সবগুলো সেল echo করা হয়েছে।
আউটপুট:
Row 1, Column 1
Row 1, Column 2
Row 1, Column 3
Row 2, Column 1
Row 2, Column 2
Row 2, Column 3
Row 3, Column 1
Row 3, Column 2
Row 3, Column 3
Nested Loops এর ব্যবহারিক দৃষ্টান্ত:
Nested Loops বেশ কার্যকরী হতে পারে কিছু ব্যবহারিক ক্ষেত্রে, যেমন:
- ডেটা ম্যানিপুলেশন: যখন আপনি একটি ফাইলের প্রতিটি লাইনের জন্য আরেকটি ফাইলের প্রতিটি লাইনের সাথে তুলনা করতে চান।
- ফাইল প্রসেসিং: একাধিক ডিরেক্টরির মধ্যে ফাইল খুঁজে বের করা এবং প্রসেস করা।
- সার্চিং বা ফিল্টারিং: একটি বড় ডেটা সেটের মধ্যে কিছু নির্দিষ্ট মান খোঁজা, যেখানে বাইরের লুপটি বিভিন্ন ডেটা সেকশন নিয়ে কাজ করবে এবং ভিতরের লুপটি প্রতি সেকশনের ভিতরের ডেটা পরীক্ষা করবে।
সারাংশ:
Nested Loops ব্যবহার Batch Script-এ আপনাকে একাধিক স্তরের লুপ তৈরি করতে সহায়তা করে। এটি খুবই উপকারী যখন আপনাকে একই সময়ের মধ্যে একাধিক আউটপুট বা ডেটার উপর কাজ করতে হয়। এর মাধ্যমে আপনি একাধিক মান নিয়ে কাজ করতে পারবেন এবং সহজেই বড় কাজগুলোকে ছোট ছোট টুকরো করে ভাগ করতে পারবেন।